using System;
namespace Rsdn.TreeGrid
{

    /// <summary>
    /// Класс помощник, обеспечивающий миграцию Модели WinGDI 
    /// (Select-Unselect) в модель using/dispose
    /// </summary>
    internal class GdiSelectorHelper : IDisposable
    {
        private readonly IntPtr _hdc;
        private readonly IntPtr _oldObject;

        /// <summary>
        /// Конструктор. Автоматически выбирает переданный объект в контекст устройства
        /// </summary>
        /// <param name="hdc">Контекст устройства</param>
        /// <param name="selectObject">Выбираемый объект</param>
        public GdiSelectorHelper(IntPtr hdc, IntPtr selectObject)
        {
			_hdc = hdc;
			_oldObject = NativeMethods.SelectObject(hdc, selectObject);
        }

        /// <summary>
        /// <see cref="M:System.IDisposable.Dispose" />
        /// </summary>
        public void Dispose()
        {
			NativeMethods.SelectObject(_hdc, _oldObject);
        }
    }
}

